Assignfile

Otázka od: Peter Surovy

30. 10. 2002 12:29

Ahoj
  mam program, ktory pocas runtime
vytvara subor s nejakym menom a relativnou cestou:

assignfile(subor,'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff');

tento program je nainstalovany v Program Files/Mojprogram
ked ho spustim s tejto lokality vsetko bezi OK
ale ked ho spustim cez Shortcut z ponuky Start - programy - Moj Program

na assignfile to padne s hlaskou Invalid File Name.
ako keby ten shortcut spustil ten program niekde inde
a nie v ProgramFiles/MojProgram
a tym padom nenajde tu podvetvu
neviete co by mohlo byt zle?

Peter Surovy

Odpovedá: Robert Suska

30. 10. 2002 12:14

Ahoj!

skus dat tu cestu do " "

> assignfile(subor,'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff');

cize potom

run('"' + 'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff' + '"')

run - to je nieco vymyslene...

S pozdravom,

************************************
Robert Suska
KORAK SLOVAKIA s.r.o.
Horna 52
974 01 Banska Bystrica
www.korak.sk robert@korak.sk
Network administrator, Delphi programmer
************************************


> Ahoj
> mam program, ktory pocas runtime
> vytvara subor s nejakym menom a relativnou cestou:
>
> assignfile(subor,'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff');
>
> tento program je nainstalovany v Program Files/Mojprogram
> ked ho spustim s tejto lokality vsetko bezi OK
> ale ked ho spustim cez Shortcut z ponuky Start - programy - Moj Program
>
> na assignfile to padne s hlaskou Invalid File Name.
> ako keby ten shortcut spustil ten program niekde inde
> a nie v ProgramFiles/MojProgram
> a tym padom nenajde tu podvetvu
> neviete co by mohlo byt zle?
>
> Peter Surovy
>

Odpovedá: Otisk Rene

30. 10. 2002 12:17

Tady si to totiz bere cestu z toho Shortcutu to znamena cesta Plochy
(C:\Windows\Profiles\User\Plocha). Cestu spustene aplikace si zjisti pres
Aplication.ExeName nebo pres prvni parametr spousteneho souboru

Sroub



> Ahoj
> mam program, ktory pocas runtime
> vytvara subor s nejakym menom a relativnou cestou:
>
> assignfile(subor,'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff');
>
> tento program je nainstalovany v Program Files/Mojprogram
> ked ho spustim s tejto lokality vsetko bezi OK
> ale ked ho spustim cez Shortcut z ponuky Start - programy - Moj Program
>
> na assignfile to padne s hlaskou Invalid File Name.
> ako keby ten shortcut spustil ten program niekde inde
> a nie v ProgramFiles/MojProgram
> a tym padom nenajde tu podvetvu
> neviete co by mohlo byt zle?

Odpovedá: Ondrej Kelle

30. 10. 2002 13:17

> mam program, ktory pocas runtime vytvara subor s
> nejakym menom a relativnou cestou:
>
> assignfile(subor,'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff');
>
> tento program je nainstalovany v Program Files/Mojprogram
> ked ho spustim s tejto lokality vsetko bezi OK ale ked ho
> spustim cez Shortcut z ponuky Start - programy -
> Moj Program na assignfile to padne s hlaskou Invalid File
> Name.
> ako keby ten shortcut spustil ten program niekde inde
> a nie v ProgramFiles/MojProgram a tym padom nenajde
> tu podvetvu neviete co by mohlo byt zle?

Presne tak. Windows nastavuje ine current directory pre proces pri spustani
zo shell linkov.
Jednoducho to mozes vyriesit tym, ze si za behu ako prve zavolas
SeCurrentDir(ExtractFilePath(ParamStr(0))) a potom (ak to uspesne prebehne)
by mali relativne cesty fungovat vzhladom k adresaru, kde sa nachadza Tvoj
program.

HTH
TOndrej

Odpovedá: ing. Jan Fiala

30. 10. 2002 13:07

Pokud to upravis na:

Datapath := ExtractFilePath(Application.ExeName)+ 'podvetva/';
assignfile(subor, DataPath + Copy(popis,1,3)+Copy(popis2,1,6)+'.fff');

Tak ti nebude vadit, at jej spustis odkudkoliv.
Pocitat s tim, ze bude program spusteny v nejakem konkretnim adresari
neni nejstastnejsi reseni  

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

30.10.2002 Peter Surovy:
> Ahoj
> mam program, ktory pocas runtime
> vytvara subor s nejakym menom a relativnou cestou:

> assignfile(subor,'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff');

> tento program je nainstalovany v Program Files/Mojprogram
> ked ho spustim s tejto lokality vsetko bezi OK
> ale ked ho spustim cez Shortcut z ponuky Start - programy - Moj Program

> na assignfile to padne s hlaskou Invalid File Name.
> ako keby ten shortcut spustil ten program niekde inde
> a nie v ProgramFiles/MojProgram
> a tym padom nenajde tu podvetvu
> neviete co by mohlo byt zle?

> Peter Surovy

Odpovedá: Peter Surovy

30. 10. 2002 13:28

Aha
asi som to nepresne vysvetlil:

----- Original Message -----
From: "Robert Suska" <delphi@korak.sk>
Sent: Wednesday, October 30, 2002 11:10 AM


> skus dat tu cestu do " "
>
> > assignfile(subor,'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff');
---subor to je len meno textaku
var subor:Textfile

> cize potom
> run('"' + 'podvetva/'+Copy(popis,1,3)+Copy(popis2,1,6)+'.fff' + '"')
> run - to je nieco vymyslene...
---tu cestu prave neviem to je podla toho kam si
to uzivatel nainstaloval iste ale je ze to cele musi byt zastresene
jednym adresarom a v tom uz som doma problem je len s tym ShortCut


--- program je program.exe a vytvara subor do ktoreho si
zapisuje data: subor.fff; tento subor sa vytvara v podadresari
/podadresar a ten je v tom istom adresari ako program.exe

Ked spustim program.exe priamo z jeho lokality vsetko bezi OK
lebo asi zrejme najde ten podadresar
ale ked ten isty program spustim cez ShortCut
pri vytvarani suboru.fff to padne s Invalid File Name
ako keby nemohol najst ten podadresar alebo co.




>
> ************************************
> Robert Suska
> KORAK SLOVAKIA s.r.o.
> Horna 52
> 974 01 Banska Bystrica
> www.korak.sk robert@korak.sk
> Network administrator, Delphi programmer
> ************************************

Odpovedá: Jan Sebelík

30. 10. 2002 16:42

> Odesílatel: Peter Surovy <psurovy@uevora.pt>
> vytvara subor s nejakym menom a relativnou cestou:

"Aktivni" adresar jde nejka natavit, mysli SysUtils.SerCurrentDir.

Ale pokud mohu doporucit, radsi na nejake relativni cesty zapomen.
(to nahore je preklep, "R" je hned vedle "T", ale ja ho tam teda necham  

Radsi pouzij
ExeDir:=ExtractFilePath(ParamStr(0))
a pak se na vsechno odkazuj pres tuto promennou.
Mas absolutni cestu a tim klid.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================